using System;
using System.Runtime.Serialization;

namespace Agile.Common
{
    /// <summary>
    /// Summary description for AssertionFailedException.
    /// </summary>
    [Serializable]
    public class AssertionFailedException : Exception
    {
        /// <summary>
        /// Initializes a new instance of the AssertionFailedException class.
        /// </summary>
        public AssertionFailedException()
        {
        }


        /// <summary>
        /// Initializes a new instance of the AssertionFailedException class with a specified error message.
        /// </summary>
        /// <param name="errorMessage">The error message that explains the reason for the exception.</param>
        public AssertionFailedException(string errorMessage)
            : base(errorMessage)
        {
        }

        /// <summary>
        /// Initializes a new instance of the AssertionFailedException class with a specified error message 
        /// and a reference to the inner exception that is the cause of this exception.
        /// </summary>
        /// <param name="errorMessage">The error message that explains the reason for the exception.</param>
        /// <param name="innerException">The exception that is the cause of the current exception.</param>
        public AssertionFailedException(string errorMessage, Exception innerException)
            : base(errorMessage, innerException)
        {
        }

        /// <summary>
        /// Initializes a new instance of the AssertionFailedException class with serialized data.
        /// </summary>
        /// <param name="info">The object that holds the serialized object data.</param>
        /// <param name="context">The contextual information about the source or destination.</param>
        protected AssertionFailedException(SerializationInfo info, StreamingContext context) : base(info, context)
        {
        }
    }
}